/**
 * Created by mooshroom on 2017/3/23.
 */
define('Home', ['avalon', 'text!../../package/Home/Home.html', 'css!../../package/Home/Home.css'], function (avalon, html, css) {
    var vm = avalon.define({
        $id: "Home",
        ready: function (i) {
            // i 页面：0-todoList 1-doneList
            index.html=html
            //如果i不是0或者1，那么默认i为0
            var checkList = [0, 1]
            if (checkList.indexOf(i) == -1) {
                i = 0
            }

            vm.page = i

            avalon.scan()

            vm.getLocal()

        },
        reset: function () {

        },
        page: "",
        pageToggle:function (i) {
            vm.page=i
        },

        $task: {
            EndTime: "",
            TaskName: "",
            Editing: true,
            Focusing:true,
            Check:0
        },

        list: [],

        //添加的方法
        add:function () {
            vm.list.unshift(vm.$task)
        },

        //保存的方法
        save:function (i) {
            //todo 调用服务器的添加任务接口添加
            if(i>=0&&i<vm.list.length){
                vm.editToggle(i)
                vm.focusToggle(i)
            }
            //缓存本地
            vm.saveLocal()
        },

        //撤销编辑
        $befor:{
            EndTime: "",
            TaskName: "",
            Editing: true,
            Focusing:true,
            Check:0
        },
        cancel:function (i) {
            avalon.mix(vm.list[i],vm.$befor)
            vm.editToggle(i)
            vm.focusToggle(i)
        },

        //删除
        del:function (i) {
            vm.list.splice(i,1)
            vm.save()
        },

        //标记完成
        checkToggle:function (i) {
            vm.list[i].Editing=true;
            vm.list[i].Focusing=true;

            vm.list[i].Check=!vm.list[i].Check

            vm.save(i)
        },

        //选中某个任务的方法
        focusToggle:function (i) {
            vm.list[i].Focusing=!vm.list[i].Focusing
        },

        //进入编辑状态
        editToggle:function (i) {
            //避免在进入编辑状态时有其他的块也在编辑状态，如果有，则关闭其他块的编辑状态
            for(var o=0;o<vm.list.length;o++){
                if(vm.list[o].Editing&&o!=i){
                    vm.list[o].Editing=false
                }
            }

            //修改编辑状态
            vm.list[i].Editing=!vm.list[i].Editing

            //如果是编辑装填的，则缓存原来的数据，以便后面撤销用
            if(vm.list[i].Editing){
                ForEach(vm.$befor,function (value, key) {
                    vm.$befor[key]=vm.list[i][key]
                })
            }
        },

        //缓存的方法
        saveLocal:function () {
            var data=[]
            var $item={
                EndTime: "",
                TaskName: "",
                Check:0
            }

            vm.list.forEach(function (el) {
                var o={}
                ForEach($item,function (val, key) {
                    o[key]=el[key]
                })

                data.push(o)
            })

            var saveingData=JSON.stringify(data)
            console.log(saveingData)

            window.localStorage.setItem('task',saveingData)
        },

        //提取缓存的方法
        getLocal:function () {
            var list=JSON.parse(window.localStorage.getItem('task'))
            list.forEach(function (el) {
                avalon.mix(el,{
                    Editing: false,
                    Focusing:false,
                })
            })

            vm.list=list
        }


    })

    return window[vm.$id]=vm
})